package com.gitee.sop.layui.adminserver.module.background.admin.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.gitee.sop.layui.adminserver.module.background.admin.constact.SysMenuConstant;
import com.gitee.sop.layui.adminserver.module.base.bo.SqlTree;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.util.StringUtils;

import java.io.Serializable;
import java.util.Date;
import java.util.UUID;

/**
 * @author: admin
 * @date: 2020-04-24
 * @version: 1.0.0
 */
@Data
@Accessors(chain = true)
public class SysMenu extends SqlTree implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * uuid编码
     */
    private String uuid;

    /**
     * 菜单名称
     */
    private String name;

    /**
     * 请求地址
     */
    private String url;

    /**
     * 图标地址
     */
    private String icon;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 菜单标识 标识当前功能是否是菜单，如果是菜单则会在菜单列表中展示；0 非菜单， 1 菜单
     */
    private Integer menuFlag;

    /**
     * 描述
     */
    private String description;

    /**
     * 可用标识 标识功能可用状态，当功能处于不可用状态时，即便拥有权限也不能访问；0：不可用 ；1：可用
     */
    private Integer status;

    /**
     * 展示模式 菜单展示在页面布局时的展示方式；
     * LEVEL :  水平展示
     * VERTICAL :  垂直展示
     */
    private String showMode;

    /**
     * 创建人uuid
     */
    private String creatorUuid;

    /**
     * 创建时间
     */
    private Date createdTime;

    /**
     * 应用id，标识数据所属
     */
    private String appId;

    public SysMenu init() {
        if (StringUtils.isEmpty(url)) {
            url = "#";
        }
        if (sort == null) {
            sort = 0;
        }
        if (status == null) {
            status = 1;
        }
        if (menuFlag == null) {
            menuFlag = 1;
        }
        if (showMode == null) {
            showMode = SysMenuConstant.SHOW_MODE_VERTICAL;
        }
        uuid = UUID.randomUUID().toString().replace("-", "");
        return this;
    }
}
